package main

import (
	"fmt"
	"os"
)

func proverbs(name string) error {
	f, err := os.Create(name)
	if err != nil {
		return err
	}
	defer f.Close()

	_, err = fmt.Fprintln(f, "Errors are values.")
	if err != nil {
		return err
	}

	_, err = fmt.Fprintln(f, "Don’t just check errors, handle them gracefully.")
	return err
}

// defer 关键字 类似 Java 中的 finally
// 使用 defer 关键字，Go 可以确保所有 deferred 的动作可以在函数返回前执行。
// 可以 defer 任意的函数和方法。
// defer 并不是专门做错误处理的。
// defer 可以消除必须时刻惦记执行资源释放的负担
func main() {
	err := proverbs("proverbs.txt")
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}
}
